A server computer may host application programs and/or connect to a graphics source. Graphics commands representing graphics, from the application programs and/or the graphics source are remotely accessed by client computers. A terminal service platform, such as Windows® Server 2003 operating system provided by the Microsoft Corporation, is one implementation of such technology, where graphics commands are sent to client computers.
The server computer is referred to as a host computer or terminal server. The client computer is referred to as a remote terminal or remote client, and communicates with the server computer through a communications medium such as a network. In order to communicate or exchange information (e.g., graphics commands), the server computer and client computers may implement a communication protocol such as remote desktop protocol (RDP) as defined by the Microsoft Corporation.
In many operating systems, such as the Windows® Server 2003 operating system, application programs send relatively higher-level graphics commands or primitives to operating system components of the server computer. Such higher-level graphics commands might specify or define colors, lines, shapes, and other graphics constructs. The operating system components interpret or convert such higher-level graphics commands into relatively lower-level graphics commands or information such as individual pixel values or bitmaps. Such a process of converting from higher-level graphics commands to relatively lower-level graphics commands will be referred to herein as rendering.
Application programs utilize operating system components of the server computer in rendering the relatively lower-level graphics commands from higher-level graphics commands. The operating system components are configured to provide the rendered relatively lower-level graphics commands to a remote client, which utilizes this information to control its display device.
Application programs and graphics sources are typically designed to operate in conjunction with a local display device or monitor of the server computer. Higher-level graphics commands from application programs or graphics sources are passed to a display driver component of the operating system. The display driver controls a local display adapter device/card which generates graphics on the local display device. When rendering the higher-level graphics commands to relatively lower-level graphics commands, operating system components may use another display driver that “mirrors” the drawing operations of the local display adapter device/card. Such a driver is called a mirror driver. In effect, the mirror driver acts as a display driver except it does not generate graphics to a display. Instead, it transmits the higher-level graphics commands to the client-computer, which then does the actual generating of graphics. The mirror driver, or other remote display driver, may format the lower-level graphics commands into communication protocol (e.g., RDP) specific units that are sent to the client computers.
The operating system components, including the display driver and mirror driver (i.e., remote display driver), are typically integrated as part of a “kernel” or central module of the operating system. The kernel is particular to the operating system of the server computer and is not easily replaceable. Regardless, client computers or other devices that are able to decode protocol specific units rely on the server computer, and in particular operating system specific components of the server computer to communicate and receive the protocol specific units. In specific, sending and receiving graphics commands relies on traditional terminal service server and client implementations which depend on operating system kernel components.